草庐IT

Lua 垃圾回收

全部标签

java - 是否值得减轻垃圾收集的影响?

我有一个应用程序,其中内存配置文件如下所示:(来源:kupio.com)内存使用量的缓慢向上爬行是由大量小的、简单的、transient对象的分配引起的。在低内存情况下(这是一个移动应用程序),与限制较少的内存量相比,GC开销很明显。因为我们知道,由于应用程序的性质,这些峰值会不断出现,所以我正在考虑某种类型的大量transient对象池(很棒的名字)。这些对象将在应用程序的整个生命周期内存在,并在可能的情况下被重新使用(对象的生命周期很短且高度可预测)。希望这可以通过减少收集的对象数量和提高性能来减轻GC的影响。显然,这也会有其自身的性能限制,因为“分配”会更昂贵,并且维护缓存本身会

java - 为什么在打印 int[] 时会得到垃圾输出?

我的程序假设计算文件中每个字符的出现次数,忽略大小写。我写的方法是:publicint[]getCharTimes(FiletextFile)throwsFileNotFoundException{ScannerinFile=newScanner(textFile);int[]lower=newint[26];charcurrent;intother=0;while(inFile.hasNext()){Stringline=inFile.nextLine();Stringline2=line.toLowerCase();for(intch=0;ch='a'&¤t打印出来使用

java - "GC--"在 java 垃圾收集日志中意味着什么?

我们打开了详细的GC日志记录以跟踪已知的内存泄漏并在日志中获得以下条目:...3607872.687:[GC471630K->390767K(462208K),0.0325540secs]3607873.213:[GC--458095K->462181K(462208K),0.2757790secs]3607873.488:[FullGC462181K->382186K(462208K),1.5346420secs]...我理解其中的第一个和第三个,但是“GC--”是什么意思? 最佳答案 我的gc输出中有这些行:44871.602:

java - 如何使用 Mailgun 避免 Outlook/Hotmail 中的垃圾邮件?

我正在使用Mailgun发送交易电子邮件(Activity门票),所有电子邮件都被发送到Outlook/Hotmail垃圾邮件,我想避免这种情况。我已经添加了SPF和DKIM记录,但没有任何效果。我应该怎么做才能避免垃圾邮件过滤器(实际上,我不是在发送垃圾邮件。用户在注册Activity时触发交易电子邮件)Clientclient=Client.create();client.addFilter(newHTTPBasicAuthFilter("api","MI_API_KEY"));WebResourcewebResource=client.resource("MAILGUN_URL"

java - 交叉引用和垃圾回收

有一个具有广泛对象图的应用程序。该图主要由一组子图组成,这些子图通过唯一引用连接到图的其余部分。但在内部,每个这样的子图在对象之间都有一定数量的交叉引用。偶尔需要丢弃这样的子图。将指向该子图的唯一引用设置为null是否足以使其符合垃圾收集条件?我担心的是内部交叉引用可能会“保护”整个子图免受垃圾收集。换句话说,垃圾收集器是否足够聪明,可以确定子图中的所有引用都不会离开子图的边界,因此可以清除整个子图。 最佳答案 如本SOquestion所述,循环引用管理得很好。Java不做引用计数,它使用tracinggarbagecollecti

java - CMS 相对于 Java 的垃圾收集器意味着什么?

很多JVM'scommandlineargumentsdealingwiththegarbagecollector在它们前面加上“CMS”。这是什么意思? 最佳答案 ConcurrentMarkSweep(或者正如Tom在评论中提到的那样,主要是并发标记清除。) 关于java-CMS相对于Java的垃圾收集器意味着什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/761585

Java 的串行垃圾收集器性能比其他垃圾收集器好得多?

我正在测试一个用Java编写的API,它有望最大限度地减少处理通过网络接收的消息时的延迟。为了实现这些目标,我正在使用各种可用的垃圾收集器。我正在尝试四种不同的技术,它们利用以下标志来控制垃圾收集:1)序列号:-XX:+UseSerialGC2)并行:-XX:+UseParallelOldGC3)并发:-XX:+UseConcMarkSweepGC4)并发/增量:-XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode-XX:+CMSIncrementalPacing我在五个小时的过程中运行了每项技术。我定期使用ManagementFactory.g

java - Java是如何解决垃圾回收中的retain cycles的?

我知道一个保留周期(至少在Objective-C和Swift中)是指两个对象声称拥有彼此的所有权(它们相互引用)。在Objective-C中,我们可以通过声明其中一个weak来解决这个问题。根据我的阅读和理解,JavaGC不受保留循环的影响,我们不必担心弱引用。它是如何解决的? 最佳答案 Java(JVM)垃圾收集器的工作方式是从对象树的根部寻找“可达”对象。如果无法访问它们(如果它们没有外部对象引用),则可以丢弃整个对象图。本质上,它只是从根节点到叶节点遍历树,并标记它遇到的所有对象。清除堆中未被标记对象占用的任何内存(标记为空闲

java - Java 中的垃圾收集是如何工作的?

我想知道Java中的垃圾收集器是如何处理以下情况的。对象A引用了对象B,对象B引用了对象C。主程序引用了对象A。因此,您可以通过对象A使用对象B,通过对象A使用对象C,通过对象B。如果对象A和对象B之间的链接设置为空,对象B和对象C会发生什么情况?对象B和对象C现在应该被垃圾收集器收集吗?我的意思是对象B和对象C之间仍然存在联系。 最佳答案 ShouldObjectBandObjectCnowbeencollectedbytheGarbageCollector?是的。好吧,它们是收集的候选者,因为无法通过A的根到达对象B和C。

java - 当 JVM 在垃圾收集期间崩溃(段错误)时,我如何才能找出正在收集的内容?

我在应用程序的同一阶段大致在我的JVM中遇到段错误,但在崩溃报告中有不同的堆栈跟踪。然而,它似乎总是在GC期间发生。由于崩溃发生在我尝试过的所有三个JVM(OpenJDK6、Oracle1.6.0_25和1.7.0)中,每个都有两个GC(并行收集器和CMS),并且它发生在应用程序的同一区域,我我想,如果我能找到GC试图收集的内容,我可能会在我的代码中发现导致这次崩溃的一些特殊之处。是否存在众所周知的GC问题编码实践?有哪些方法可用于诊断此问题?我能否对在我的应用程序中触发此问题的位置做出任何有根据的猜测?我可以使用哪些(GC调整)参数来缩小问题范围?有没有办法在堆转储中发现(可能)有问